home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / Prefs / GadTools / Root_window.c < prev    next >
C/C++ Source or Header  |  1995-11-16  |  21KB  |  654 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Gaël Marziou & Ph. Bastiani
  7.  */
  8.  
  9.  
  10. #define __USE_SYSBASE
  11.  
  12. #include <exec/memory.h>
  13. #include <exec/types.h>
  14. #include <intuition/intuition.h>
  15. #include <intuition/classes.h>
  16. #include <intuition/classusr.h>
  17. #include <intuition/imageclass.h>
  18. #include <intuition/gadgetclass.h>
  19. #include <libraries/gadtools.h>
  20. #include <libraries/asl.h>
  21. #include <workbench/workbench.h>
  22. #include <proto/exec.h>
  23. #include <proto/dos.h>
  24. #include <proto/intuition.h>
  25. #include <proto/gadtools.h>
  26. #include <proto/icon.h>
  27. #include <proto/wb.h>
  28. #include <proto/asl.h>
  29. #include <string.h>
  30. #include <stdlib.h>
  31.  
  32. #include "code.h"
  33. #include "version.h"
  34. #include "yak.h"
  35. #include "hotkey_types.h"
  36. #include "gui.h"
  37. #include "filereq.h"
  38. #include "Requesters.h"
  39. #include "Settings.h"
  40. #include "Root_Window.h"
  41. #include "Root_Menus.h"
  42.  
  43. #define CATCOMP_NUMBERS
  44. #include "locale/yak_locale_strings.h"
  45.  
  46. IMPORT LONG (*HandleIDCMP)(void);
  47. IMPORT BOOL CreateIcons;
  48. IMPORT char *ProgramName;
  49. IMPORT char *PrefsFile;
  50. IMPORT struct NotifyRequest NotifyRequest;
  51.  
  52. struct Window   *RootWnd = NULL;
  53. struct Gadget   *RootGList = NULL;
  54. struct Menu     *RootMenus = NULL;
  55. struct Gadget   *RootGadgets[Root_CNT];
  56. UWORD            RootWidth = 600;
  57. UWORD            RootHeight = 156;
  58. UBYTE           *RootWdt = NULL;
  59. BOOL             RootWdi = FALSE;
  60.  
  61. struct AppWindow      *RootAppWin;         /* AppWindow pointer */
  62. IMPORT struct MsgPort *AppMsgPort;
  63.  
  64. /* Online help system */
  65. IMPORT void ShowYakHelp(char *, char *);
  66. IMPORT void CloseYakHelp(void);
  67. IMPORT char *PrefsHelp;
  68.  
  69.  
  70. #define ROOT_TNUM 3
  71.  
  72. struct IntuiText RootIText[ROOT_TNUM] = 
  73. {
  74.     2,0,JAM1,0,0,NULL,NULL,NULL,
  75.     2,0,JAM1,0,0,NULL,NULL,NULL,
  76.     2,0,JAM1,0,0,NULL,NULL,NULL
  77. };
  78.  
  79.  
  80. VOID
  81. InitRootITexts(VOID)
  82. {
  83.    RootIText[0].IText = getString(WINDOWS_ACTIVATE_STRING);
  84.    RootIText[1].IText = getString(AUTOPOPTOFRONT_STRING);
  85.    RootIText[2].IText = getString(SCREEN_ACTIVATE_STRING);
  86. }
  87.  
  88.  
  89.  
  90. UWORD RootGTypes[] = {
  91.         CHECKBOX_KIND,
  92.         CHECKBOX_KIND,
  93.         CHECKBOX_KIND,
  94.         CHECKBOX_KIND,
  95.         CHECKBOX_KIND,
  96.         CHECKBOX_KIND,
  97.         STRING_KIND,
  98.         STRING_KIND,
  99.         BUTTON_KIND,
  100.         BUTTON_KIND,
  101.         BUTTON_KIND,
  102.         BUTTON_KIND,
  103.         BUTTON_KIND,
  104.         BUTTON_KIND,
  105.         BUTTON_KIND,
  106.         SLIDER_KIND
  107. };
  108.  
  109.  
  110. struct NewGadget RootNGad[] = 
  111. {
  112.         226, 15, 26,11,NULL,NULL,GD_AutoCheck     ,PLACETEXT_RIGHT,NULL,AUTOPOINT_STRING,
  113.           6, 15, 26,11,NULL,NULL,GD_KeyActCheck   ,PLACETEXT_RIGHT,NULL,KEY_ACTIVATE_STRING,
  114.           6, 72, 26,11,NULL,NULL,GD_ScrActCheck   ,PLACETEXT_RIGHT,NULL,SCREEN_ACTIVATE_STRING,
  115.         226, 72, 26,11,NULL,NULL,GD_AutoPopCheck  ,PLACETEXT_RIGHT,NULL,AUTOPOPTOFRONT_STRING,
  116.           6, 39, 26,11,NULL,NULL,GD_RMBActCheck   ,PLACETEXT_RIGHT,NULL,RMB_ACTIVATE_STRING,
  117.           6, 27, 26,11,NULL,NULL,GD_MMBActCheck   ,PLACETEXT_RIGHT,NULL,MMB_ACTIVATE_STRING,
  118.         430, 27,164,14,NULL,NULL,GD_AutoPat       ,PLACETEXT_LEFT ,NULL,AUTOSCREENS_STRING,
  119.         430, 84,164,14,NULL,NULL,GD_PopPat        ,PLACETEXT_LEFT ,NULL,POPWINDOWS_STRING,
  120.         226,122,182,13,NULL,NULL,GD_EditHotkeys   ,PLACETEXT_IN   ,NULL,EDIT_HOTKEYS_STRING,
  121.         412,122,182,13,NULL,NULL,GD_Miscellaneous ,PLACETEXT_IN   ,NULL,MISCELLANEOUS_STRING,
  122.         412,106,182,13,NULL,NULL,GD_Blanking      ,PLACETEXT_IN   ,NULL,Blanking,
  123.           6,140,100,13,NULL,NULL,GD_Save          ,PLACETEXT_IN   ,NULL,SAVE_STRING,
  124.         494,140,100,13,NULL,NULL,GD_Cancel0       ,PLACETEXT_IN   ,NULL,CANCEL_STRING,
  125.         250,140,100,13,NULL,NULL,GD_Use           ,PLACETEXT_IN   ,NULL,USE_STRING,
  126.         226,106,182,13,NULL,NULL,GD_MouseCycling  ,PLACETEXT_IN   ,NULL,MOUSECYCLING_STRING,
  127.         430, 43,147,11,NULL,NULL,GD_AutoPointDelay,PLACETEXT_LEFT ,NULL,AUTOPOINT_DELAY_STRING
  128. };
  129.  
  130.  
  131. ULONG RootGTags[] = 
  132. {
  133.         (GTCB_Scaled),TRUE,(TAG_DONE),
  134.         (GTCB_Scaled),TRUE,(TAG_DONE),
  135.         (GTCB_Scaled),TRUE,(TAG_DONE),
  136.         (GTCB_Scaled),TRUE,(TAG_DONE),
  137.         (GTCB_Scaled),TRUE,(TAG_DONE),
  138.         (GTCB_Scaled),TRUE,(TAG_DONE),
  139.         (GTST_MaxChars),99,(TAG_DONE),
  140.         (GTST_MaxChars),99,(TAG_DONE),
  141.         (TAG_DONE),
  142.         (TAG_DONE),
  143.         (TAG_DONE),
  144.         (TAG_DONE),
  145.         (TAG_DONE),
  146.         (TAG_DONE),
  147.         (TAG_DONE),
  148.         (GTSL_Max),5,(GTSL_MaxLevelLen),4,(GTSL_LevelFormat),(ULONG)"%1ld",(GTSL_LevelPlace),(PLACETEXT_RIGHT),(PGA_Freedom), LORIENT_HORIZ,(GA_RelVerify),TRUE,(TAG_DONE),
  149. };
  150.  
  151.  
  152. /* initialise gadgets */
  153. static void
  154. InitAutoPointGadgets( void )
  155. {
  156.     InitWindowGadget(GDX_AutoPat, GTST_String, (LONG)patterns[YP_AUTOSCR_PAT].patstr, ROOT_WINDOW);
  157.     InitWindowGadget(GDX_AutoPat, GA_Disabled, !autopoint, ROOT_WINDOW);
  158.  
  159.     InitWindowGadget(GDX_AutoPointDelay, GTSL_Level, autopoint_delay, ROOT_WINDOW);
  160.  
  161.     InitWindowGadget(GDX_AutoPointDelay, GA_Disabled, !autopoint, ROOT_WINDOW);
  162. }
  163.  
  164. static void
  165. InitAutoPopGadgets( void)
  166. {
  167.     InitWindowGadget(GDX_PopPat, GTST_String, (LONG)patterns[YP_POPWIN_PAT].patstr, ROOT_WINDOW);
  168.     InitWindowGadget(GDX_PopPat, GA_Disabled, !autopop, ROOT_WINDOW);
  169. }
  170.  
  171.  
  172.  
  173. static void
  174. InitRootGadgets(void)
  175. {
  176.     InitToggleGadgets(ROOT_WINDOW);
  177.  
  178.     InitAutoPopGadgets();
  179.  
  180.     InitAutoPointGadgets();
  181. }
  182.  
  183. VOID 
  184. RootRender(void)
  185. {
  186.     UWORD X,Y;
  187.     UWORD width, height;
  188.     UWORD cnt;
  189.  
  190.     ComputeFont(RootWidth,RootHeight);
  191.  
  192.     /* Window activation */
  193.     X = Y = 0;
  194.     height= ComputeY(57);
  195.     DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
  196.                      ComputeX( RootWidth ),
  197.                      height,
  198.                      FALSE);
  199.     RootIText[ 0 ].LeftEdge  = X +5;
  200.     RootIText[ 0 ].TopEdge   = Y +3;
  201.  
  202.     /* Screens Activation */
  203.     width = ComputeX(220);
  204.     Y += height;
  205.     height = ComputeY(138) - Y;
  206.     DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
  207.                      width,
  208.                      height,
  209.                      FALSE);
  210.     RootIText[ 2 ].LeftEdge  = X +5;
  211.     RootIText[ 2 ].TopEdge   = Y +3;
  212.  
  213.     /* AutoPopToFront box */
  214.     X = width;
  215.     width  = ComputeX(RootWidth)-width;
  216.     height = ComputeY(103) - Y;
  217.     DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
  218.                      width,
  219.                      height,
  220.                      FALSE);
  221.     RootIText[ 1 ].LeftEdge  = X +5;
  222.     RootIText[ 1 ].TopEdge   = Y +3;
  223.  
  224.     /* Buttons */
  225.     Y += height;
  226.     height = ComputeY(138) - Y;
  227.     DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
  228.                      width,
  229.                      height,
  230.                      FALSE);
  231.  
  232.     /* SAVE / USE / CANCEL */
  233.     Y += height;
  234.     DrawThinBevelBox(Scr, RootWnd->RPort, OffX, Y+OffY,
  235.                      ComputeX( RootWidth ),
  236.                      ComputeY(RootHeight)-ComputeY(138),
  237.                      FALSE );
  238.  
  239.     /* Text */
  240.     for ( cnt = 0; cnt < ROOT_TNUM; cnt++ )
  241.     {
  242.         RootIText[ cnt ].ITextFont = Font;
  243.         PrintIText( RootWnd->RPort, &RootIText[ cnt ], OffX, OffY );
  244.     }
  245. }
  246.  
  247.  
  248.  
  249.  
  250. int 
  251. OpenRootWindow(void)
  252. {
  253.         struct NewGadget        ng;
  254.         struct Gadget   *g;
  255.         UWORD           lc, tc;
  256.         WORD            wleft=WindowLeft, wtop=WindowTop;
  257.         UWORD           ww, wh;
  258.  
  259.         ComputeFont(RootWidth,RootHeight);
  260.  
  261.         ww = OffX + ComputeX(RootWidth) + Scr->WBorRight;
  262.         wh = OffY + ComputeY(RootHeight) + Scr->WBorBottom;
  263.  
  264.         SetUpWindowCoordinates(ww, wh, &wleft, &wtop);
  265.  
  266.         if (! (g = CreateContext(&RootGList)))
  267.                 return(1L);
  268.  
  269.         for(lc = 0,tc = 0; lc < Root_CNT; lc++) {
  270.  
  271.                 CopyMem((char *)&RootNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  272.  
  273.                 ng.ng_VisualInfo = VisualInfo;
  274.                 ng.ng_TextAttr   = Font;
  275.                 ng.ng_LeftEdge   = OffX + ComputeX(ng.ng_LeftEdge);
  276.                 ng.ng_TopEdge    = OffY + ComputeY(ng.ng_TopEdge);
  277.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  278.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  279.  
  280.                 RootGadgets[ lc ] = g = CreateGadgetA((ULONG)RootGTypes[ lc ],g,&ng,(struct TagItem *)&RootGTags[ tc ]);
  281.  
  282.                 while(RootGTags[ tc ]) tc += 2;
  283.                 tc++;
  284.  
  285.                 if (NOT g)
  286.                         return(2L);
  287.         }
  288.  
  289.         /**** CHANGED */
  290.         if (! (RootMenus = CreateMenus(RootNewMenu,GTMN_NewLookMenus,
  291.                                                                          TRUE,0L,
  292.                                                                          TAG_DONE)))
  293.                 return(3L);
  294.  
  295.         LayoutMenus(RootMenus,VisualInfo,GTMN_NewLookMenus,TRUE,TAG_DONE);
  296.  
  297.         if (! (RootWnd = OpenWindowTags(NULL,
  298.                                 WA_Left,          wleft,
  299.                                 WA_Top,           wtop,
  300.                                 WA_Width,         ww,
  301.                                 WA_Height,        wh,
  302.                                 WA_IDCMP,         BUTTONIDCMP|CHECKBOXIDCMP|STRINGIDCMP|SLIDERIDCMP|IDCMP_MENUPICK|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
  303.                                 WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  304.                                 WA_Gadgets,       RootGList,
  305.                                 WA_Title,         RootWdt,
  306.                                 WA_ScreenTitle,   getString(COPYRIGHT_STRING),
  307.                                 WA_AutoAdjust,    TRUE,
  308. /**** ADDED */                  WA_NewLookMenus,  TRUE,
  309.                                 WA_PubScreenName, PubScreenName,
  310.                                 TAG_DONE)))
  311.         return(4L);
  312.  
  313.         RootAppWin = AddAppWindowA(0, 0, RootWnd, AppMsgPort, NULL);
  314.  
  315.         SetMenuStrip(RootWnd,RootMenus);
  316.         GT_RefreshWindow(RootWnd,NULL);
  317.  
  318.         RootRender();
  319.  
  320.         return(0L);
  321. }
  322.  
  323. VOID
  324. CloseRootWindow(void)
  325. {
  326.         CloseOneWindow(RootWnd,RootMenus,RootGList,RootAppWin);
  327.         RootWnd = NULL;
  328. }
  329.  
  330. /* show our Root window */
  331. BOOL
  332. ShowRootWindow(void)
  333. {
  334.     static char title[80];
  335.  
  336.     if (!RootWdi)
  337.     {
  338.         RootWdi = TRUE;
  339.  
  340.         strcpy(title, getString(Prefs_Window_TITLE));
  341.         strcat(title, " : ");
  342.         strcat(title,VERSION_NAME);
  343.         RootWdt = title;
  344.  
  345.         InitRootNewMenu ();
  346.         InitRootITexts();
  347.         LocalizeNGadLabels (Root_CNT, RootNGad);
  348.     }
  349.  
  350.     if (!OpenRootWindow())  /* like the name says... */
  351.     {
  352.             InitRootGadgets();
  353.             wndsigflag = 1 << RootWnd->UserPort->mp_SigBit;
  354.             HandleIDCMP  = HandleRootIDCMP;
  355.             curwin   = RootWnd;
  356.             curwinID = ROOT_WINDOW;
  357.  
  358.             return TRUE;
  359.     }
  360.  
  361.     FreeGadgets(RootGList);
  362.     FreeMenus(RootMenus);
  363.     CloseDownScreen();
  364.     curwin =  NULL;
  365.     wndsigflag = 0L;
  366.     return FALSE;
  367. }
  368.  
  369.  
  370.  
  371.  
  372. /* handle Root window events */
  373. LONG
  374. HandleRootIDCMP(void)
  375. {
  376.     struct IntuiMessage *msg;
  377.     struct Gadget       *gadget;
  378.     ULONG                class;
  379.     UWORD                code;
  380.     char                *file;
  381.     FileReqParams        frp;
  382.     BOOL                 close=FALSE;
  383.     LONG                 ret=RET_OKAY;
  384.  
  385.     while (!close && (msg=GT_GetIMsg(RootWnd->UserPort)))
  386.     {
  387.         class  = msg->Class;
  388.         code   = msg->Code;
  389.         gadget = (struct Gadget *)msg->IAddress;
  390.         GT_ReplyIMsg(msg);
  391.  
  392.         switch (class)
  393.         {
  394.           case GADGETUP:
  395.           case GADGETDOWN:
  396.                 switch (gadget->GadgetID)
  397.                 {
  398.                   case GD_EditHotkeys:
  399.                         if (!SwitchFromRootWindow(HOTKEY_WINDOW))
  400.                         {
  401.                             PostError(getString(Couldnt_open_other_window_ERR));
  402.                             ret = RET_QUIT;
  403.                         }
  404.                         close = TRUE;
  405.                         break;
  406.  
  407.                   case GD_Miscellaneous:
  408.                         if (!SwitchFromRootWindow(MISC_WINDOW))
  409.                         {
  410.                             PostError(getString(Couldnt_open_other_window_ERR));
  411.                             ret = RET_QUIT;
  412.                         }
  413.                         close = TRUE;
  414.                         break;
  415.  
  416.                         break;
  417.  
  418.                   case GD_Blanking:
  419.                         if (!SwitchFromRootWindow(BLANK_WINDOW))
  420.                         {
  421.                             PostError(getString(Couldnt_open_other_window_ERR));
  422.                             ret = RET_QUIT;
  423.                         }
  424.                         close = TRUE;
  425.                         break;
  426.  
  427.                   case GD_MouseCycling:
  428.                         if (!SwitchFromRootWindow(MCYCLING_WINDOW))
  429.                         {
  430.                             PostError(getString(Couldnt_open_other_window_ERR));
  431.                             ret = RET_QUIT;
  432.                         }
  433.                         close = TRUE;
  434.                         break;
  435.  
  436.                   case GD_AutoPat:
  437.                         NewPattern(GDX_AutoPat, &patterns[YP_AUTOSCR_PAT], gadget, ROOT_WINDOW);
  438.                         break;
  439.  
  440.                   case GD_PopPat:
  441.                         NewPattern(GDX_PopPat, &patterns[YP_POPWIN_PAT], gadget, ROOT_WINDOW);
  442.                         break;
  443.  
  444.                   case GD_Save:
  445.                         DisableYakInterface();
  446.                         EndNotify(&NotifyRequest);
  447.                         SaveSettings(ENVARC_CONFIG_FILE);
  448.                         CopyFile(ENVARC_CONFIG_FILE, ENV_CONFIG_FILE);
  449.                         StartNotify(&NotifyRequest);
  450.                         EnableYakInterface();
  451.                         close = TRUE;
  452.                         ret   = RET_QUIT;
  453.                         break;
  454.  
  455.                   case GD_Use:
  456.                         DisableYakInterface();
  457.                         EndNotify(&NotifyRequest);
  458.                         SaveSettings(ENV_CONFIG_FILE);
  459.                         StartNotify(&NotifyRequest);
  460.                         close = TRUE;
  461.                         ret   = RET_QUIT;
  462.                         break;
  463.  
  464.                   case GD_Cancel0:
  465.                         close = TRUE;
  466.                         ret   = RET_QUIT;
  467.                         break;
  468.  
  469.                   case GD_AutoCheck: /* toggle */
  470.                         autopoint ^= TRUE;
  471.                         InitAutoPointGadgets();
  472.                         break;
  473.  
  474.                   case GD_AutoPopCheck: /* toggle */
  475.                         autopop ^= TRUE;
  476.                         InitAutoPopGadgets();
  477.                         break;
  478.  
  479.                   case GD_KeyActCheck: /* toggle */
  480.                         keyactivate ^= TRUE;
  481.                         break;
  482.  
  483.                   case GD_ScrActCheck: /* toggle */
  484.                         scractivate ^= TRUE;
  485.                         break;
  486.  
  487.                   case GD_RMBActCheck: /* toggle */
  488.                         rmbactivate ^= TRUE;
  489.                         break;
  490.  
  491.                   case GD_MMBActCheck: /* toggle */
  492.                         mmbactivate ^= TRUE;
  493.                         break;
  494.  
  495.                   case GD_AutoPointDelay:
  496.                         autopoint_delay = code;
  497.                         break;
  498.  
  499.                 }                      /* switch (gadget->GadgetID) */
  500.                 break;
  501.  
  502.           case IDCMP_MENUPICK:
  503.                 while (!close && (code != MENUNULL))
  504.                 {
  505.                     struct MenuItem *item = ItemAddress(RootMenus, code);
  506.  
  507.                     switch((UBYTE)GTMENUITEM_USERDATA(item))
  508.                     {
  509.                         case MD_OPEN:
  510.                             frp.frp_Window      = curwin;
  511.                             frp.frp_Title       = getString(FILEREQ_LOAD_STRING);
  512.                             frp.frp_InitialFile = PrefsFile;
  513.                             frp.frp_Flag1       = 0L;
  514.  
  515.                             DisableYakInterface();
  516.                             if (file=OpenFileRequester(&frp))
  517.                             {
  518.                                 LoadSettings(file);
  519.                                 FreeVec(PrefsFile);
  520.                                 PrefsFile = file;
  521.                                 InitRootGadgets();
  522.                             }
  523.                             EnableYakInterface();
  524.                             break;
  525.  
  526.                         case MD_SAVE:
  527.                             DisableYakInterface();
  528.                             EndNotify(&NotifyRequest);
  529.                             SaveSettings(ENVARC_CONFIG_FILE);
  530.                             CopyFile(ENVARC_CONFIG_FILE, ENV_CONFIG_FILE);
  531.                             StartNotify(&NotifyRequest);
  532.                             EnableYakInterface();
  533.                             break;
  534.  
  535.                         case MD_SAVEAS:
  536.                             frp.frp_Window      = curwin;
  537.                             frp.frp_Title       = getString(FILEREQ_SAVEAS_STRING);
  538.                             frp.frp_InitialFile = PrefsFile;
  539.                             frp.frp_Flag1       = FRF_DOSAVEMODE;
  540.  
  541.                             DisableYakInterface();
  542.                             EndNotify(&NotifyRequest);
  543.                             if (file=OpenFileRequester(&frp))
  544.                             {
  545.                                 SaveSettings(file);
  546.                                 if (CreateIcons)
  547.                                 {
  548.                                     struct DiskObject *dobj;
  549.  
  550.                                     /* Get project icon */
  551.                                     if (!(dobj=GetDiskObject("ENV:Sys/def_yak")))
  552.                                         dobj = GetDefDiskObject(WBPROJECT);
  553.                                     
  554.                                     if (dobj)
  555.                                     {
  556.                                         /* Set values */
  557.                                         dobj->do_DefaultTool = ProgramName;
  558.                                         dobj->do_Type        = WBPROJECT;
  559.  
  560.                                         /* Write icon */
  561.                                         PutDiskObject(file, dobj);
  562.  
  563.                                         /* Free icon */
  564.                                         FreeDiskObject(dobj);
  565.                                     }
  566.                                 }
  567.                                 FreeVec(PrefsFile);
  568.                                 PrefsFile = file;
  569.                             }
  570.                             StartNotify(&NotifyRequest);
  571.                             EnableYakInterface();
  572.                             break;
  573.  
  574.                         case MD_HIDE:
  575.                             CloseYakHelp();
  576.                             HideInterface();
  577.                             close = TRUE;
  578.                             break;
  579.  
  580.                         case MD_ABOUT:
  581.                             DisableYakInterface();
  582.                             PostError(getString(About_Yak_STRING));
  583.                             EnableYakInterface();
  584.                             break;
  585.  
  586.                         case MD_QUIT:
  587.                             close = TRUE;
  588.                             ret   = RET_QUIT;
  589.                             break;
  590.  
  591.                         case MD_DEFAULT:
  592.                             DisableYakInterface();
  593.                             SetDefaultSettings();
  594.                             InitRootGadgets();
  595.                             EnableYakInterface();
  596.                             break;
  597.  
  598.                         case MD_LASTSAVED:
  599.                             DisableYakInterface();
  600.                             LoadSettings(ENVARC_CONFIG_FILE);
  601.                             InitRootGadgets();
  602.                             EnableYakInterface();
  603.                             break;
  604.  
  605.                         case MD_ACTIVE:
  606.                             DisableYakInterface();
  607.                             LoadSettings(ENV_CONFIG_FILE);
  608.                             InitRootGadgets();
  609.                             EnableYakInterface();
  610.                             break;
  611.  
  612.                         case MD_CREATEICONS:
  613.                             CreateIcons ^= TRUE;
  614.                             break;
  615.  
  616.                     }
  617.                     code = item->NextSelect;
  618.  
  619.                 }       /* while more menuchoices */
  620.                 break;
  621.  
  622.           case IDCMP_RAWKEY:
  623.                 /* Help key pressed */
  624.                 if (code == 95)
  625.                 {
  626.                     /* Display the node */
  627.                     ShowYakHelp(PrefsHelp, "MainWindow");
  628.                 }
  629.                 break;
  630.  
  631.           case REFRESHWINDOW:
  632.                 GT_BeginRefresh(RootWnd);
  633.                 RootRender();
  634.                 GT_EndRefresh(RootWnd, TRUE);
  635.                 break;
  636.  
  637.         }       /* switch (class) */
  638.  
  639.     }       /* while more messages */
  640.  
  641.     return ret;
  642. }
  643.  
  644.  
  645.  
  646. /* switch from Root window to a sub-window */
  647. BOOL
  648. SwitchFromRootWindow(UBYTE WindowID)
  649. {
  650.         CloseRootWindow();
  651.         return ShowWindowID(WindowID);
  652. }
  653.  
  654.